package com.niuwa.p2p.dao.business;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.niuwa.p2p.dao.MyBatisDao;
import com.niuwa.p2p.entity.business.PlanProduct;
import com.niuwa.p2p.vo.business.InvestPlanProductVo;
import com.niuwa.p2p.vo.business.PlanVo;
import com.niuwa.p2p.vo.front.product.FrontProductDetailVo;
import com.niuwa.p2p.vo.front.product.FrontProductListVo;

@MyBatisDao
public interface PlanProductDao {

	/**
	 * 新增投资计划信息
	 * @param planProductVo 投资计划
	 */
	public int saveInvestPlanProduct(PlanVo planProductVo);


	/**
	 * 查询符合条件的投资计划
	 * @param paramMap  查询参数
	 * @return 投资计划列表
	 */
	public List<InvestPlanProductVo> selectInvestPlanBySelective(Map<String, Object> paramMap);


	/**
	 * 查询符合条件的投资计划数
	 * @param paramMap
	 * @return
	 */
	public int selectInvestPlanCountBySelective(Map<String, Object> paramMap);


	/**
	 * 获取投资计划详情
	 * @param paramMap
	 * @return
	 */
	public InvestPlanProductVo getInvestPlanBySelective(Map<String, Object> paramMap);


	/**
	 * 修改投资计划信息
	 * @param planProductVo 投资计划
	 */
	public int updateInvestPlanProduct(PlanVo planVo);


	/**
	 * 修改投资计划状态
	 * @param paramMap
	 * @return
	 */
	public int updateInvestPlanStatus(Map<String, Object> paramMap);


	/**
	 * 根据编码状态获取产品信息
	 * @param paramMap
	 * @return
	 */
	public InvestPlanProductVo getInvestPlanByCodeStatus(Map<String, Object> paramMap);
	
	
	public PlanProduct getInvestPlanByParam(Map<String, Object> paramMap);


	// ====================== 前台使用 Add by bwz begin  ==============================
	/**
	 * 根据条件查询计划产品列表
	 * @param paramMap
	 * @return
	 * @throws Exception
	 */
	public List<FrontProductListVo> selectPlanProductListPage(Map<String,Object> paramMap) throws Exception;
	
	
	/**
	 * @Description: 计划产品详细信息
	 * @param paramMap
	 * @return
	 */
	public FrontProductDetailVo getPlanProductDetail(Map<String, Object> paramMap);

	
	/**
     * @Description: 热门产品列表，针对已投资过的用户
     * 推荐规则：目前只推荐计划类
     * 1、未投资用户，推荐新客专享，计划A，计划B
     * 2、投资过的用户，推荐计划A，计划B，计划C
     * @param paramMap
     * @return
     */
    public List<FrontProductListVo> selectHotProduct(Map<String, Object> paramMap);
    
    
    /**
     * @Description: 热门产品列表，针对未投资过的用户
     * 推荐规则：目前只推荐计划类
     * 1、未投资用户，推荐新客专享，计划A，计划B
     * 2、投资过的用户，推荐计划A，计划B，计划C
     * @param paramMap
     * @return
     */
    public List<FrontProductListVo> selectHotProduct4New(Map<String, Object> paramMap);

    
    
	// ====================== 前台使用 Add by bwz end =================================
    /**
     * 首页新客专享
     * @return
     */
    public FrontProductListVo selectProdNewForIndex();

    public List<FrontProductListVo> selectProdPlanForIndex();

}
